

import tkinter as tk
import time
import redis
from util import get_add_data_from_redis, get_delete_data_from_redis

r = redis.Redis(host='localhost', port=6379, db=0)

# 创建一个订阅者对象
p = r.pubsub()

# 订阅频道
p.subscribe('door_status')

def close_window():
    root.destroy()  # 关闭窗口

def get_current_count():
    # 这是一个示例函数，用于获取当前数量的值
    # 在实际使用中，你应该根据自己的需求来实现这个函数

    initial_count = r.scard('now_esp_set')
    return initial_count
    
def get_current_status():
    # 这是一个示例函数，用于获取当前数量的值
    # 在实际使用中，你应该根据自己的需求来实现这个函数

    status = r.get("cabinet_current_status")

    # 如果状态存在，则进行处理
    if status is not None:
        # 将字节数据解码为字符串
        status = status.decode()
        # 在这里进行其他处理
        return status
    else:
        # 如果状态不存在
        return('设备程序未启动过')


def update_count_label():
    count = get_current_count()
    count_label.config(text="当前商品数量：" + str(count))
    root.after(1000, update_count_label)  # 每1秒更新一次数量
    
def update_status_label():
    status = get_current_status()
    status_label.config(text="当前设备状态：" + str(status))
    root.after(1000, update_status_label)  # 每1秒更新一次数量

def update_add_list():

    status = r.get("cabinet_current_status")
    status = status.decode() if status else ""

    if status == "盘点结束":
        # 清空delete_listbox中的数据
        add_listbox.delete(0, tk.END)

        # 从数据源获取新数据（例如从Redis中获取数据）
        data = get_add_data_from_redis()  # 替换为适当的数据源函数

        # 将新数据添加到delete_listbox中
        for item in data:
            add_listbox.insert(tk.END, item)

    root.after(1000, update_add_list)  # 每1秒更新一次数量

def update_delete_list():
    
    status = r.get("cabinet_current_status")
    status = status.decode() if status else ""

    if status == "盘点结束":
        # 清空delete_listbox中的数据
        delete_listbox.delete(0, tk.END)

        # 从数据源获取新数据（例如从Redis中获取数据）
        data = get_delete_data_from_redis()  # 替换为适当的数据源函数

        # 将新数据添加到delete_listbox中
        for item in data:
            delete_listbox.insert(tk.END, item)

    root.after(1000, update_delete_list)  # 每1秒更新一次数量

root = tk.Tk()
root.attributes('-fullscreen', True)

root.columnconfigure(0, weight=1)

root.columnconfigure(1, weight=1)

root.columnconfigure(2, weight=1)


# 当前设备状态

status_label = tk.Label(root, text="当前状态：", font=("Helvetica", 24))
# status_label.pack(anchor=tk.N, padx=50,pady=50)
status_label.grid(row=0, column=0, sticky=tk.W, ipady=60, ipadx=30)
update_status_label()

# 当前数量
count_label = tk.Label(root, text="当前数量：", font=("Helvetica", 24))
# count_label.pack(anchor=tk.NW, padx=50,pady=50)

count_label.grid(row=0, column=1)

update_count_label()


# 关闭按扭
frame = tk.Frame(root)
frame.grid(row=0, column=2, sticky=tk.E, padx=10, pady=10)

close_button = tk.Button(frame, text="关闭", command=close_window)
close_button.pack()


# 盘点结果
inventory_label = tk.Label(root, text="盘点结果：", font=("Helvetica", 24))
# count_label.pack(anchor=tk.NW, padx=50,pady=50)

inventory_label.grid(row=2, column=0, sticky=tk.W, pady=50, padx=50)



# 创建一个整体框架
frame = tk.Frame(root)
frame.grid(row=3)

# 创建一个标题商品
add_title_label = tk.Label(frame, text="添加商品", font=("Helvetica", 24))
add_title_label.grid(row=0, column=0, pady=20)

# 创建一个Listbox
add_listbox = tk.Listbox(frame, width=50)
add_listbox.grid(row=1, column=0)

update_add_list()


# 创建一个标题商品
delete_title_label = tk.Label(frame, text="删除商品", font=("Helvetica", 24))
delete_title_label.grid(row=0, column=1)

# 创建一个Listbox
delete_listbox = tk.Listbox(frame, width=50)
delete_listbox.grid(row=1, column=1, padx=30, pady=20)

update_delete_list()


root.mainloop()


























